import { initReactI18next } from 'react-i18next';
import i18n from 'i18next';
import languageDetector from 'i18next-browser-languagedetector';
import Backend from 'i18next-http-backend'; // fallback http load

/**
 * 初始化i18n国际化配置。
 *
 * 该函数使用i18n库的`use`方法依次加载后端插件、语言检测插件和React i18n初始化插件，
 * 并通过`init`方法进行配置初始化。
 *
 * @param {Object} config - 初始化配置对象
 * @param {Object} config.backend - 后端配置
 * @param {string} config.backend.loadPath - 语言文件的加载路径，支持动态语言和命名空间变量
 * @param {string} config.fallbackLng - 默认语言，当检测不到用户语言时使用
 * @param {Object} config.interpolation - 插值配置
 * @param {boolean} config.interpolation.escapeValue - 是否对插值进行转义，false表示不转义
 * @param {Object} config.react - React相关配置
 * @param {boolean} config.react.bindI18nStore - 是否绑定i18n store，false表示不绑定
 */
i18n
  .use(Backend)
  .use(languageDetector)
  .use(initReactI18next)
  .init({
    backend: {
      loadPath: '/locales/{{lng}}/{{ns}}.json',
    },
    fallbackLng: 'zh-CN',
    interpolation: {
      escapeValue: false,
    },
    react: {
      bindI18nStore: false,
    },
  });

export default i18n;
